package com.cskaoyan.javase.oop1._13block._3static;

/**
 * 一些细节问题（重要）
 *      1.静态代码块可以近似看成一个，在类加载时期自动调用的静态成员方法，所以不能在里面调用非静态。（没有对象）
 *      包括this关键字，和后面学习的super关键字，都不能使用。
 *  这意味虽然构造代码块可以给静态成员变量赋值，但静态代码块不能给成员变量赋值。
 *      说白了，还是要搞清楚，谁先谁后执行的问题！
 *
 *      2.当需要使用复杂的代码给静态成员变量赋值时，可以使用静态代码块。
 *          但如果仅仅是简单的赋值，直接显式赋值即可。
 *          总得来说，静态代码块用得不多。
 *      3.静态代码块也经常被用来测试类加载的顺序（重要）
 *          一个类的静态代码块如果没有被执行，说明它没有被完全类加载。
 *
 * @since 16:26
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo2 {
    static {
        System.out.println("6666");
    }

    public static void main(String[] args) {
        new A();
    }
}

class A {
    int num;

    static {
        // System.out.println(num);
        System.out.println("7777");
    }
}
